qx.Class.define("caraffa.widgets.PacientesFechaMedico",
{
	extend : qx.ui.core.Widget,
	construct : function (fecha)
	{
		this.base(arguments);

		var fechaFormat = new qx.util.format.DateFormat("dd/MM/yyyy");
		fecha ? this._fecha = fecha : this._fecha = fechaFormat.format(new Date());
		fechaFormat = null;

		this._setLayout(new qx.ui.layout.Basic());
		
		var model = new qx.ui.table.model.Simple();
		model.setColumns(["cod_turno","DNI", "Hora","Nombre","E", "Forma de Pago"]);
		model.setColumnSortable(0, false);
		model.setColumnSortable(1, false);
		model.setColumnSortable(2, false);
		model.setColumnSortable(3, false);
		model.setColumnSortable(4, false);
		model.setColumnSortable(5, false);
		
		this._grid = new qx.ui.table.Table(model);
			this._grid.setColumnWidth(2, 50);
			this._grid.setColumnWidth(3, 200);
			this._grid.setColumnWidth(4, 30);
			this._grid.setColumnWidth(5, 240);
			this._grid.setShowCellFocusIndicator(true);
			this._grid.setColumnVisibilityButtonVisible(false);
			this._grid.setWidth(540);
			this._grid.setHeight(200);
			this._grid.setStatusBarVisible(false);
			this._grid.getTableColumnModel().setColumnVisible(0, false);
			this._grid.getTableColumnModel().setColumnVisible(1, false);
			this._grid.getTableColumnModel().setDataCellRenderer(4, new qx.ui.table.cellrenderer.Image(19, 16));
		
		this._imgRefrescar = new qx.ui.basic.Image("caraffa/16/actualizar.png");
			this._imgRefrescar.setCursor("pointer");
		
		this._grpDatosTurno = new qx.ui.groupbox.GroupBox("Datos del Turno:");
		this._grpDatosTurno.setLayout(new qx.ui.layout.Basic());
		
		this._txtMotivo = new qx.ui.form.ow.TextField("Motivo:");
		this._txtMotivo.getText().setReadOnly(true);
		this._txtMotivo.getText().setWidth(385);
		this._txaObservaciones = new qx.ui.form.ow.TextArea("Diagnostico:");
			this._txaObservaciones.getText().setWidth(510);
			this._txaObservaciones.getText().setHeight(80);
		this._btnHistoriaClinica = new qx.ui.form.Button("Ver Historia Clínica");
		this._btnGuardar = new qx.ui.form.Button("Guardar y marcar como Atendido");
		
		this._grpDatosTurno.add(this._txtMotivo, {left:10, top:10});
		this._grpDatosTurno.add(this._txaObservaciones, {left:10, top:40});
		this._grpDatosTurno.add(this._btnHistoriaClinica, {left:120, top:145});
		this._grpDatosTurno.add(this._btnGuardar, {left:260, top:145});
		
		this._attachEvents();
		this._initForm();
		
		this._add(this._grid, {left:10, top:10});
		this._add(this._imgRefrescar,{left:555, top:10});
		this._add(this._grpDatosTurno,{left:10, top:220});
	},
	members :
	{
		_fecha : null,
		_attachEvents : function ()
		{
			this._grid.addListener("cellClick", this._getDatosPaciente, this);
			this._imgRefrescar.addListener("click", this._initForm, this);
			this._btnHistoriaClinica.addListener("click", this._getHistoriaClinica, this);
			this._grid.addListener("keyup", function (e)
			{
				if ((e.getKeyIdentifier() == 'Up') || (e.getKeyIdentifier() == 'Down'))
				{
					this._getDatosPaciente();
				}
			}, this);
						
			this._btnGuardar.addListener("execute", this._guardarMarcar, this);
			this.addListener("appear", this._initForm, this);
		},
		_initForm : function ()
		{
			this._txtMotivo.setValue("");
			this._txaObservaciones.setValue("");
			this._grid.resetSelection();
			this._grid.resetCellFocus();
			this._btnGuardar.setUserData("cod_paciente_atendido", null);
			this._grpDatosTurno.setEnabled(false);
			this._getPacientesFecha(this._fecha);
			
		},
		_getPacientesFecha : function (fecha)
		{
			var rpc = new qx.io.remote.Rpc();
			rpc.setTimeout(10000);
			rpc.setUrl("services/");
			rpc.setServiceName("turnos");
			try
			{
				var params = new Object();
				params.fecha = fecha;
				var result = rpc.callSync("getPacientesFechaMedico", params);
				this._grid.getTableModel().setData(result);
			}
			catch (ex)
			{
				alert(ex);
			}
		},
		_getDatosPaciente : function ()
		{
			this._txaObservaciones.setValue("");
			if (this._grid.getTableModel().getValue(4, this._grid.getFocusedRow()) != "caraffa/nuevo.png")
			{
				this._grpDatosTurno.setEnabled(true);
				var rpc = new qx.io.remote.Rpc();
				rpc.setTimeout(10000);
				rpc.setUrl("services/");
				rpc.setServiceName("turnos");
				try
				{
					var params = new Object();
					params.cod_turno = this._grid.getTableModel().getValue(0, this._grid.getFocusedRow());
					var result = rpc.callSync("getObservacionesPaciente", params);
					if (result.datos_turno[0])
					{
						this._btnGuardar.setUserData("cod_paciente_atendido", result.datos_turno[0].cod_paciente_atendido);
						this._txaObservaciones.setValue(result.datos_turno[0].observaciones);
					}
					else
					{
						this._btnGuardar.setUserData("cod_paciente_atendido", "");
						this._txaObservaciones.setValue("");
					}
					this._txtMotivo.setValue(result.motivo[0].motivo + "");
				}
				catch (ex)
				{
					alert(ex);
				}
			}
			else
			{
				this._grpDatosTurno.setEnabled(false);
			}
		},
		_guardarMarcar : function ()
		{
			var rpc = new qx.io.remote.Rpc();
			rpc.setTimeout(10000);
			rpc.setUrl("services/");
			rpc.setServiceName("turnos");
			try
			{
				var params = new Object();
				params.cod_paciente_atendido = this._btnGuardar.getUserData("cod_paciente_atendido");
				params.cod_turno = this._grid.getTableModel().getValue(0, this._grid.getFocusedRow());
				params.observaciones = this._txaObservaciones.getValue();
				var result = rpc.callSync("guardarMarcar", params);
				this._initForm();
			}
			catch (ex)
			{
				alert(ex);
			}
		},
		_getHistoriaClinica:function ()
		{
			var dni_paciente =  this._grid.getTableModel().getValue(1, this._grid.getFocusedRow());
			var nombre =  this._grid.getTableModel().getValue(3, this._grid.getFocusedRow());
			var winHistoriaClinica = new caraffa.widgets.HistoriaClinica("Historia Clinica Paciente: "+nombre, dni_paciente);
			winHistoriaClinica.addListener("resize", winHistoriaClinica.center, winHistoriaClinica);
  			winHistoriaClinica.open();
		}
	}
});
